package org.hades.corelib.utils.device

import java.text.ParsePosition
import java.text.SimpleDateFormat
import java.util.*

/**
 * 时间帮助类
 */
object TimeHelper {
    /**
     * simple 2001-07-04 12:08
     */
    const val TIME_FORMAT_YY_MM_MM = "yyyy-MM-dd HH:mm"

    /**
     * simple 2001-07-04 12:08:56
     */
    const val TIME_FORMAT_YY_SS = "yyyy-MM-dd HH:mm:ss"

    /**
     * simple 2001-07-04
     */
    const val TIME_FORMAT_YY_DD = "yyyy-MM-dd"

    /**
     * simple 2001-07
     */
    const val TIME_FORMAT_YY_MM = "yyyy-MM"

    /**
     * simple 2001-07-04T12:08:56.235-0700
     */
    const val TIME_FORMAT_YY_SSSZ = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

    /**
     * simple 2001-07-04T12:08:56.235-07:00
     */
    const val TIME_FORMAT_YY_SSSXXX = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"

    /**
     * 将时间戳转为指定的格式
     *
     * @param time   时间戳(milliseconds)
     * @param format 转换格式
     * @return 指定的格式
     */
    fun stamp2String(time: Long, format: String?): String {
        val date = Date()
        date.time = time
        val dateFormat = SimpleDateFormat(format, Locale.getDefault())
        return dateFormat.format(date)
    }
    /**
     * 将指定的格式的时间转为时间戳
     *
     * @param timeString   时间
     * @param format 转换格式
     * @return 时间戳(milliseconds)
     */
    /**
     * 将 `"yyyy-MM-dd HH:mm:ss"` 时间格式转为时间戳
     *
     * @param timeString 2001-07-04 12:08:56 转时间戳
     * @return  时间戳(milliseconds)
     */
    @JvmOverloads
    fun stringToStamp(timeString: String?, format: String? = TIME_FORMAT_YY_SS): Long {
        val dateFormat = SimpleDateFormat(format, Locale.getDefault())
        return timeString?.let { dateFormat.parse(it, ParsePosition(0)) }!!.time
    }

    fun getY2Min(time: Long): String {
        return stamp2String(time, TIME_FORMAT_YY_MM_MM)
    }

    fun getY2Day(time: Long): String {
        return stamp2String(time, TIME_FORMAT_YY_DD)
    }
}